In [1]:
%pylab inline

import plotly.plotly as py
from plotly.graph_objs import *
#from plotly.tools import FigureFactory as FF
from plotly.figure_factory import create_trisurf

from skimage import measure
from plotly.offline import *
init_notebook_mode()
Populating the interactive namespace from numpy and matplotlib
In [2]:
def dispTB(X,Y,Z):
    return(-cos(X)-cos(Y)-cos(Z))

Valence band around $\Gamma$ point for Si including spin orbit coupling

Heavy Hole and Light Hole

$E_{HH}(\mathbf{ k}) =- \frac{\hbar^2}{2 m_e}\,\left[ A k^2-\sqrt{B^2 k^4+ C^2\left(k_x^2 k_y^2 + k_y^2 k_z^2 +k_z^2 k_x^2\right)}\right]$ $E_{LH}(\mathbf{ k}) =- \frac{\hbar^2}{2 m_e}\,\left[ A k^2+\sqrt{B^2 k^4+ C^2\left(k_x^2 k_y^2 + k_y^2 k_z^2 +k_z^2 k_x^2\right)}\right]$,

where $A = 4.27, B = 0.63, C= 4.93 $ for Silicon

Lásd: Sólyom Jenő: A modern szilárdtest-fizika alapjai II. Fémek, félvezetők, szupravezetők

(20.2.9) egyenlet, 885. old.

In [3]:
# Silicium savszerkezete, spin-palya kolcsonhatassal
# Solyom Jeno, II. kotet, 885. old., (20.2.9) egyenlet
def dispSi(kx,ky,kz,params):
    A, B, C = params
    k2 = kx*kx+ky*ky+kz*kz
    k4 = k2*k2
    tmp = sqrt(B*B*k4+C*C*(kx*kx*ky*ky+ky*ky*kz*kz+kz*kz*kx*kx))
    eHH = - (A*k2-tmp)   #  heavy hole
    eLH = - (A*k2+tmp)   #  light hole
    
    return([eHH,eLH])
In [4]:
A = 4.27
B = 0.63
C= 4.93
params = [A,B,C]
dispSi(pi,0.27,0,params)
Out[4]:
[-34.923083193342499, -49.985904391960609]
In [5]:
npoints = 50j

klim = 0.5

X,Y,Z = np.mgrid[-klim:klim:npoints, -klim:klim:npoints, -klim:klim:npoints]
surf_eq = dispSi(X,Y,Z, params)[0]    # heavy hole
vertices, simplices,dumm1,dumm2 = measure.marching_cubes(surf_eq, -0.5)
x,y,z = zip(*vertices)  

fig = create_trisurf(x=x,y=y,z=z,simplices=simplices,plot_edges=False,title='Heavy hole band for Si')
iplot(fig)

#savefig('Si_heavy_hole.png')
In [6]:
npoints = 50j

klim = 0.5

X,Y,Z = np.mgrid[-klim:klim:npoints, -klim:klim:npoints, -klim:klim:npoints]
surf_eq = dispSi(X,Y,Z, params)[1]    # light hole
vertices, simplices,dumm1,dumm2 = measure.marching_cubes(surf_eq, -0.5)
x,y,z = zip(*vertices)  

fig = create_trisurf(x=x,y=y,z=z,simplices=simplices,plot_edges=False,title='Light hole band for Si')
iplot(fig)

#savefig('Si_light_hole.png')
In [ ]: